packages feed

Agda-2.3.2.2: benchmark/ac/Example.agda

module Example where

open import Bool
open import Nat hiding (_==_; _+_)
open import AC

open Provable

infix 40 _+_
infix 30 _==_

postulate
  X : Set
  _==_ : X -> X -> Set
  |0|  : X
  _+_  : X -> X -> X
  refl  : forall {x}     -> x == x
  sym   : forall {x y}   -> x == y -> y == x
  trans : forall {x y z} -> x == y -> y == z -> x == z
  idL   : forall {x}     -> |0| + x == x
  idR   : forall {x}     -> x + |0| == x
  comm  : forall {x y}   -> x + y == y + x
  assoc : forall {x y z} -> x + (y + z) == (x + y) + z
  congL : forall {x y z} -> y == z -> x + y == x + z
  congR : forall {x y z} -> x == y -> x + z == y + z

open Semantics
      _==_ _+_ |0| refl sym trans idL idR
      comm assoc congL congR

thm = theorem 11 \a b c d e f g h i j k ->
      j ○ (k ○ (((((h ○ (e ○ ((e ○ (a ○ (a ○ (b ○ ((c ○ (((c ○ (d ○ d)) ○ (((d
      ○ (d ○ ((d ○ ((e ○ k) ○ ((((a ○ b) ○ (((h ○ (k ○ f)) ○ (((d ○ ((j ○ (h ○
      (a ○ (((g ○ (k ○ g)) ○ ((b ○ (i ○ (i ○ ((i ○ ((k ○ (d ○ (b ○ ((b ○ ((h ○
      k) ○ e)) ○ a)))) ○ j)) ○ a)))) ○ i)) ○ h)))) ○ (g ○ h))) ○ f) ○ h)) ○ b))
      ○ f) ○ f))) ○ (e ○ d)))) ○ d) ○ c)) ○ c)) ○ b))))) ○ (((a ○ a) ○ k) ○
      e)))) ○ c) ○ h) ○ (d ○ a)) ○ (c ○ a)))
      ≡
      (j ○ (k ○ (((h ○ (h ○ e)) ○ ((((e ○ (((a ○ (b ○ ((b ○ c) ○ (((d ○ d) ○
      ((d ○ d) ○ ((((e ○ (e ○ (f ○ f))) ○ (((a ○ ((b ○ (h ○ (k ○ (h ○ ((f ○ ((h
      ○ ((h ○ (a ○ ((k ○ (g ○ (b ○ (k ○ ((((a ○ (((e ○ h) ○ k) ○ b)) ○ b) ○ d)
      ○ j))))) ○ ((((a ○ i) ○ i) ○ i) ○ i)))) ○ ((g ○ h) ○ g))) ○ (j ○ d))) ○
      f))))) ○ b)) ○ k) ○ d)) ○ d) ○ d))) ○ ((c ○ c) ○ c))))) ○ (a ○ a)) ○ a))
      ○ (k ○ e)) ○ c) ○ d)) ○ a))) ○ (c ○ a)

test = prove thm