packages feed

qed-0.0: test/Main.hs

module Main(main) where

import Classes
import HLint
import Proof.QED

-- TODO: Formalise generalise properly. Can it be done as extraction? Is strict generalisation always sufficient?
-- TODO: Write an automatic prover

-- TOTHINK: What to do about type classes? How do you prove laws about instances? How do you associate laws?
--          Add an assume to a proof?
-- TOTHINK: What do I do about things like +? Do I assume them like I do for type classes?
-- TOTHINK: Do I just state the laws and leave it at that?

main = qedCheat $ do
    imports "Builtin"
    imports "Prelude"
    imports "List"
    imports "Maybe"
    imports "Monad"

    law "a b => a + b = b + a"
    law "a => a + 0 = a"

    classes
    hlint