summaryrefslogtreecommitdiff
path: root/examples/nqueens/NQueens.gf
blob: bd236bf55b0f2b0e22b98ee09f19b640c8f80c9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
abstract NQueens = Nat ** {

cat Matrix Nat ;
cat [Nat] ;
cat Vec (s,l : Nat) [Nat] ;
cat Sat Nat Nat [Nat] ;

data nilV  : ({s} : Nat) -> ({c} : [Nat]) -> Vec s zero c ;
     consV : ({l},j,k : Nat) -> 
                let s = succ (plus j k)
                in ({c} : [Nat]) -> Sat j (succ zero) c -> Vec s l (ConsNat j c) -> Vec s (succ l) c ;

     nilS : ({j,d} : Nat) -> Sat j d BaseNat ;
     consS : ({i,j,d} : Nat) -> ({c} : [Nat]) -> NE i j -> NE i (plus d j) -> NE (plus d i) j -> Sat j (succ d) c -> Sat j d (ConsNat i c) ;

     matrix : ({s} : Nat) -> Vec s s BaseNat -> Matrix s ;

}