Fermat / Gottlob

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gottlob

Data Type Declaration

data Name params where
   constr :: Type
   constr :: Type
   constr :: Type
   ...    (deriving Ind)?

Name ::= upperVar
constr ::= lowerVar
params ::= (var)*
Type ::= Type -> Type | ...

Program

A proper subset of Haskell without explicit type declaration.

Theorem Proving

theorem proofName ([formulaName])? . formula
proof
   [name = proof (: formula)? | [assumption] : formula ]
   [name = proof (: formula)? | [assumption] : formula ]
   [name = proof (: formula)? | [assumption] : formula ]
...

qed

name, proofName, assumption ::= lowerVar
proof ::= p
formula ::= F

Formula/Set Abbrievation

Name params = [formula | set]
Name ::= upperVar
set ::= S
Tactic Declaration

tactic name params = [oneLine | multipleLine]
oneLine ::= q
multipleLine ::=
   [name = proof (: formula)? | [assumption] : formula ]
   [name = proof (: formula)? | [assumption] : formula ]
   [name = proof (: formula)? | [assumption] : formula ]

Fixability Declaration

e.g.
prog infixr 10 >>=
proof infixl 10 >>-
formula infixl 3 *

Atomic Syntax

variable var ::= lowerVar | upperVar

formula F ::= upperVar | F -> F' | forall var . F | t :: S | S S' | S t

set/property S ::= upperVar | iota var . F | iota var . S | S S' | S t

program t ::= lowerVar | t t' | \ lowerVar . t

proof : p ::= lowerVar | mp p by p' | inst p by [S | F | t]
           | ug var . p | cmp p | invcmp p from F
           | simpCmp p | invSimp p from F | beta p
           | invBeta p | discharge a (: F)? . p
           | q [p | t | F | S ]

tactic q ::= lowerVar | \ lowerVar . p | \ lowerVar . q | q q | q [p | t | F | S ]

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Grammatical Framework 51.3%Language:Haskell 46.2%Language:Emacs Lisp 2.5%