rename Nat to NAT in AST
This commit is contained in:
parent
e0ed37720f
commit
fa7f82ae5a
24 changed files with 92 additions and 92 deletions
|
@ -19,7 +19,7 @@ defGlobals = fromList
|
|||
("f", mkPostulate GAny (^Arr One (^FT "A" 0) (^FT "A" 0))),
|
||||
("id", mkDef GAny (^Arr One (^FT "A" 0) (^FT "A" 0)) (^LamY "x" (^BVT 0))),
|
||||
("eq-AB", mkPostulate GZero (^Eq0 (^TYPE 0) (^FT "A" 0) (^FT "B" 0))),
|
||||
("two", mkDef GAny (^Nat) (^Succ (^Succ (^Zero))))]
|
||||
("two", mkDef GAny (^NAT) (^Succ (^Succ (^Zero))))]
|
||||
|
||||
parameters (label : String) (act : Eff Equal ())
|
||||
{default defGlobals globals : Definitions}
|
||||
|
@ -447,30 +447,30 @@ tests = "equality & subtyping" :- [
|
|||
],
|
||||
|
||||
"natural type" :- [
|
||||
testEq "ℕ = ℕ" $ equalTy empty (^Nat) (^Nat),
|
||||
testEq "ℕ = ℕ : ★₀" $ equalT empty (^TYPE 0) (^Nat) (^Nat),
|
||||
testEq "ℕ = ℕ : ★₆₉" $ equalT empty (^TYPE 69) (^Nat) (^Nat),
|
||||
testNeq "ℕ ≠ {}" $ equalTy empty (^Nat) (^enum []),
|
||||
testEq "0=1 ⊢ ℕ = {}" $ equalTy empty01 (^Nat) (^enum [])
|
||||
testEq "ℕ = ℕ" $ equalTy empty (^NAT) (^NAT),
|
||||
testEq "ℕ = ℕ : ★₀" $ equalT empty (^TYPE 0) (^NAT) (^NAT),
|
||||
testEq "ℕ = ℕ : ★₆₉" $ equalT empty (^TYPE 69) (^NAT) (^NAT),
|
||||
testNeq "ℕ ≠ {}" $ equalTy empty (^NAT) (^enum []),
|
||||
testEq "0=1 ⊢ ℕ = {}" $ equalTy empty01 (^NAT) (^enum [])
|
||||
],
|
||||
|
||||
"natural numbers" :- [
|
||||
testEq "0 = 0" $ equalT empty (^Nat) (^Zero) (^Zero),
|
||||
testEq "0 = 0" $ equalT empty (^NAT) (^Zero) (^Zero),
|
||||
testEq "succ two = succ two" $
|
||||
equalT empty (^Nat) (^Succ (^FT "two" 0)) (^Succ (^FT "two" 0)),
|
||||
equalT empty (^NAT) (^Succ (^FT "two" 0)) (^Succ (^FT "two" 0)),
|
||||
testNeq "succ two ≠ two" $
|
||||
equalT empty (^Nat) (^Succ (^FT "two" 0)) (^FT "two" 0),
|
||||
equalT empty (^NAT) (^Succ (^FT "two" 0)) (^FT "two" 0),
|
||||
testNeq "0 ≠ 1" $
|
||||
equalT empty (^Nat) (^Zero) (^Succ (^Zero)),
|
||||
equalT empty (^NAT) (^Zero) (^Succ (^Zero)),
|
||||
testEq "0=1 ⊢ 0 = 1" $
|
||||
equalT empty01 (^Nat) (^Zero) (^Succ (^Zero))
|
||||
equalT empty01 (^NAT) (^Zero) (^Succ (^Zero))
|
||||
],
|
||||
|
||||
"natural elim" :- [
|
||||
testEq "caseω 0 return {a,b} of {zero ⇒ 'a; succ _ ⇒ 'b} = 'a" $
|
||||
equalT empty
|
||||
(^enum ["a", "b"])
|
||||
(E $ ^CaseNat Any Zero (^Ann (^Zero) (^Nat))
|
||||
(E $ ^CaseNat Any Zero (^Ann (^Zero) (^NAT))
|
||||
(SN $ ^enum ["a", "b"])
|
||||
(^Tag "a")
|
||||
(SN $ ^Tag "b"))
|
||||
|
@ -478,16 +478,16 @@ tests = "equality & subtyping" :- [
|
|||
testEq "caseω 1 return {a,b} of {zero ⇒ 'a; succ _ ⇒ 'b} = 'b" $
|
||||
equalT empty
|
||||
(^enum ["a", "b"])
|
||||
(E $ ^CaseNat Any Zero (^Ann (^Succ (^Zero)) (^Nat))
|
||||
(E $ ^CaseNat Any Zero (^Ann (^Succ (^Zero)) (^NAT))
|
||||
(SN $ ^enum ["a", "b"])
|
||||
(^Tag "a")
|
||||
(SN $ ^Tag "b"))
|
||||
(^Tag "b"),
|
||||
testEq "caseω 4 return ℕ of {0 ⇒ 0; succ n ⇒ n} = 3" $
|
||||
equalT empty
|
||||
(^Nat)
|
||||
(E $ ^CaseNat Any Zero (^Ann (^makeNat 4) (^Nat))
|
||||
(SN $ ^Nat)
|
||||
(^NAT)
|
||||
(E $ ^CaseNat Any Zero (^Ann (^makeNat 4) (^NAT))
|
||||
(SN $ ^NAT)
|
||||
(^Zero)
|
||||
(SY [< "n", ^BN Unused] $ ^BVT 1))
|
||||
(^makeNat 3)
|
||||
|
@ -513,7 +513,7 @@ tests = "equality & subtyping" :- [
|
|||
(^Pair (^Tag "b") (^Tag "a")),
|
||||
testEq "0=1 ⊢ ('a, 'b) = ('b, 'a) : ℕ" $
|
||||
equalT empty01
|
||||
(^Nat)
|
||||
(^NAT)
|
||||
(^Pair (^Tag "a") (^Tag "b"))
|
||||
(^Pair (^Tag "b") (^Tag "a"))
|
||||
],
|
||||
|
|
|
@ -85,7 +85,7 @@ tests = "PTerm → Term" :- [
|
|||
],
|
||||
|
||||
"terms" :-
|
||||
let defs = fromList [("f", mkDef GAny (^Nat) (^Zero))]
|
||||
let defs = fromList [("f", mkDef GAny (^NAT) (^Zero))]
|
||||
-- doesn't have to be well typed yet, just well scoped
|
||||
fromPTerm = runFromParser {defs} .
|
||||
fromPTermWith [< "𝑖", "𝑗"] [< "A", "x", "y", "z"]
|
||||
|
|
|
@ -282,8 +282,8 @@ tests = "parser" :- [
|
|||
],
|
||||
|
||||
"naturals" :- [
|
||||
parseMatch term "ℕ" `(Nat _),
|
||||
parseMatch term "Nat" `(Nat _),
|
||||
parseMatch term "ℕ" `(NAT _),
|
||||
parseMatch term "Nat" `(NAT _),
|
||||
parseMatch term "zero" `(Zero _),
|
||||
parseMatch term "succ n" `(Succ (V "n" {}) _),
|
||||
parseMatch term "3"
|
||||
|
@ -296,9 +296,9 @@ tests = "parser" :- [
|
|||
|
||||
"box" :- [
|
||||
parseMatch term "[1.ℕ]"
|
||||
`(BOX (PQ One _) (Nat _) _),
|
||||
`(BOX (PQ One _) (NAT _) _),
|
||||
parseMatch term "[ω. ℕ × ℕ]"
|
||||
`(BOX (PQ Any _) (Sig (Unused _) (Nat _) (Nat _) _) _),
|
||||
`(BOX (PQ Any _) (Sig (Unused _) (NAT _) (NAT _) _) _),
|
||||
parseMatch term "[a]"
|
||||
`(Box (V "a" {}) _),
|
||||
parseMatch term "[0]"
|
||||
|
@ -388,13 +388,13 @@ tests = "parser" :- [
|
|||
`(Case (PQ Any _) (V "n" {}) (Unused _, V "A" {})
|
||||
(CaseNat (V "a" {}) (PV "n'" _, PQ Zero _, Unused _, V "b" {}) _) _),
|
||||
parseMatch term "caseω n return ℕ of { succ _, 1.ih ⇒ ih; zero ⇒ 0; }"
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, Nat _)
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, NAT _)
|
||||
(CaseNat (Zero _) (Unused _, PQ One _, PV "ih" _, V "ih" {}) _) _),
|
||||
parseMatch term "caseω n return ℕ of { succ _, ω.ih ⇒ ih; zero ⇒ 0; }"
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, Nat _)
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, NAT _)
|
||||
(CaseNat (Zero _) (Unused _, PQ Any _, PV "ih" _, V "ih" {}) _) _),
|
||||
parseMatch term "caseω n return ℕ of { succ _, ih ⇒ ih; zero ⇒ 0; }"
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, Nat _)
|
||||
`(Case (PQ Any _) (V "n" {}) (Unused _, NAT _)
|
||||
(CaseNat (Zero _) (Unused _, PQ One _, PV "ih" _, V "ih" {}) _) _),
|
||||
parseFails term "caseω n return A of { zero ⇒ a }",
|
||||
parseFails term "caseω n return ℕ of { succ ⇒ 5 }"
|
||||
|
@ -425,9 +425,9 @@ tests = "parser" :- [
|
|||
`(MkPDef (PQ Zero _) "A"
|
||||
(PConcrete (Just $ TYPE 0 _) (Enum ["a", "b", "c"] _)) _),
|
||||
parseMatch definition "postulate yeah : ℕ"
|
||||
`(MkPDef (PQ Any _) "yeah" (PPostulate (Nat _)) _),
|
||||
`(MkPDef (PQ Any _) "yeah" (PPostulate (NAT _)) _),
|
||||
parseMatch definition "postulateω yeah : ℕ"
|
||||
`(MkPDef (PQ Any _) "yeah" (PPostulate (Nat _)) _),
|
||||
`(MkPDef (PQ Any _) "yeah" (PPostulate (NAT _)) _),
|
||||
parseMatch definition "postulate0 FileHandle : ★"
|
||||
`(MkPDef (PQ Zero _) "FileHandle" (PPostulate (TYPE 0 _)) _),
|
||||
parseFails definition "postulate not-a-postulate : ℕ = 69",
|
||||
|
|
|
@ -210,7 +210,7 @@ tests = "pretty printing terms" :- [
|
|||
"type-case" :- [
|
||||
testPrettyE [<] [<]
|
||||
{label = "type-case ℕ ∷ ★⁰ return ★⁰ of { ⋯ }"}
|
||||
(^TypeCase (^Ann (^Nat) (^TYPE 0)) (^TYPE 0) empty (^Nat))
|
||||
(^TypeCase (^Ann (^NAT) (^TYPE 0)) (^TYPE 0) empty (^NAT))
|
||||
"type-case ℕ ∷ ★⁰ return ★⁰ of { _ ⇒ ℕ }"
|
||||
"type-case Nat :: Type 0 return Type 0 of { _ => Nat }"
|
||||
],
|
||||
|
|
|
@ -52,7 +52,7 @@ tests = "whnf" :- [
|
|||
],
|
||||
|
||||
"neutrals" :- [
|
||||
testNoStep "x" (ctx [< ("A", ^Nat)]) $ ^BV 0,
|
||||
testNoStep "x" (ctx [< ("A", ^NAT)]) $ ^BV 0,
|
||||
testNoStep "a" empty $ ^F "a" 0,
|
||||
testNoStep "f a" empty $ ^App (^F "f" 0) (^FT "a" 0),
|
||||
testNoStep "★₀ ∷ ★₁" empty $ ^Ann (^TYPE 0) (^TYPE 1)
|
||||
|
@ -81,13 +81,13 @@ tests = "whnf" :- [
|
|||
],
|
||||
|
||||
"elim closure" :- [
|
||||
testWhnf "x{}" (ctx [< ("x", ^Nat)])
|
||||
testWhnf "x{}" (ctx [< ("x", ^NAT)])
|
||||
(CloE (Sub (^BV 0) id))
|
||||
(^BV 0),
|
||||
testWhnf "x{a/x}" empty
|
||||
(CloE (Sub (^BV 0) (^F "a" 0 ::: id)))
|
||||
(^F "a" 0),
|
||||
testWhnf "x{a/y}" (ctx [< ("x", ^Nat)])
|
||||
testWhnf "x{a/y}" (ctx [< ("x", ^NAT)])
|
||||
(CloE (Sub (^BV 0) (^BV 0 ::: ^F "a" 0 ::: id)))
|
||||
(^BV 0),
|
||||
testWhnf "x{(y{a/y})/x}" empty
|
||||
|
@ -96,7 +96,7 @@ tests = "whnf" :- [
|
|||
testWhnf "(x y){f/x,a/y}" empty
|
||||
(CloE (Sub (^App (^BV 0) (^BVT 1)) (^F "f" 0 ::: ^F "a" 0 ::: id)))
|
||||
(^App (^F "f" 0) (^FT "a" 0)),
|
||||
testWhnf "(y ∷ x){A/x}" (ctx [< ("x", ^Nat)])
|
||||
testWhnf "(y ∷ x){A/x}" (ctx [< ("x", ^NAT)])
|
||||
(CloE (Sub (^Ann (^BVT 1) (^BVT 0)) (^F "A" 0 ::: id)))
|
||||
(^BV 0),
|
||||
testWhnf "(y ∷ x){A/x,a/y}" empty
|
||||
|
@ -129,10 +129,10 @@ tests = "whnf" :- [
|
|||
^App (^F "f" 0)
|
||||
(E $ ^App (^Ann (^LamY "x" (^BVT 0)) (^Arr One (^FT "A" 0) (^FT "A" 0)))
|
||||
(^FT "a" 0)),
|
||||
testNoStep "λx. (y x){x/x,a/y}" (ctx [< ("y", ^Nat)]) $
|
||||
testNoStep "λx. (y x){x/x,a/y}" (ctx [< ("y", ^NAT)]) $
|
||||
^LamY "x" (CloT $ Sub (E $ ^App (^BV 1) (^BVT 0))
|
||||
(^BV 0 ::: ^F "a" 0 ::: id)),
|
||||
testNoStep "f (y x){x/x,a/y}" (ctx [< ("y", ^Nat)]) $
|
||||
testNoStep "f (y x){x/x,a/y}" (ctx [< ("y", ^NAT)]) $
|
||||
^App (^F "f" 0)
|
||||
(CloT (Sub (E $ ^App (^BV 1) (^BVT 0))
|
||||
(^BV 0 ::: ^F "a" 0 ::: id)))
|
||||
|
|
|
@ -79,7 +79,7 @@ sndDef =
|
|||
(SY [< "x", "y"] $ ^BVT 0))))
|
||||
|
||||
nat : Term d n
|
||||
nat = ^Nat
|
||||
nat = ^NAT
|
||||
|
||||
apps : Elim d n -> List (Term d n) -> Elim d n
|
||||
apps = foldl (\f, s => ^App f s)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue