summaryrefslogtreecommitdiff
path: root/examples/math/MathEnz.gf
blob: 2e352503247b4be8079b8c2250a435a4b9cce231 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
--# -path=.:prelude

concrete MathEnz of Mathw = open Prelude in {

flags lexer = textlit ; unlexer = textlit ;

-- lincat Section ; Context ; Typ ; Obj ; Prop ; Proof ; Var ;

lin
  SDefObj cont obj typ df = 
    ss ("Definition" ++ "." ++ cont.s ++ 
        obj.s ++ "is" ++ "a" ++ typ.s ++ "," ++ "defined" ++ "as" ++ df.s ++ ".") ;  
  SDefProp cont prop df = 
    ss ("Definition" ++ "." ++ cont.s ++ "we" ++ "say" ++ 
        "that" ++ prop.s ++ "if" ++ df.s ++ ".") ;  
  SAxiom cont prop = 
    ss ("Axiom" ++ "." ++ cont.s ++ prop.s ++ ".") ;
  STheorem cont prop proof = 
    ss ("Theorem" ++ "." ++ cont.s ++ prop.s ++ "." ++ proof.s ++ ".") ;

  CEmpty = ss [] ;
  CObj vr typ co = ss ("let" ++ vr.s ++ "be" ++ "a" ++ typ.s ++ "." ++ co.s) ;
  CProp prop co = ss ("assume" ++ prop.s ++ "." ++ co.s) ;

  OVar v = v ;

  V_x = ss "x" ;
  V_y = ss "y" ;
  V_z = ss "z" ;

-- lexicon

  Set  = ss "set" ;
  Nat  = ss ["natural number"] ;
  Zero = ss "zero" ;
  Succ = prefixSS ["the successor of"] ;
  One  = ss "one" ;
  Two  = ss "two" ;
  Even = postfixSS ["is even"] ;
  Odd  = postfixSS ["is odd"] ;
  Prime = postfixSS ["is prime"] ;
  Divisible = infixSS ["is divisible by"] ;
  
}