Loop.agda 628 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. module Loop where
  2. {-
  3. data _=>_ (A, B : Set) : Set where
  4. lam : (A -> B) -> A => B
  5. app : {A, B : Set} -> (A => B) -> A -> B
  6. app (lam f) = f
  7. delta = lam (\x -> app x x)
  8. loop = app delta delta
  9. -}
  10. lam : (A, B : Set) -> (A -> B) -> A -> B
  11. lam A B f = f
  12. app : (A, B : Set) -> (A -> B) -> A -> B
  13. app A B f = f
  14. postulate Nat : Set
  15. zero : Nat
  16. wrap : (F : Nat -> Set) -> F zero -> F zero
  17. wrap F x = x
  18. delta : (Nat -> Nat) -> Nat
  19. delta = \x -> x (wrap _ x)
  20. loop : Nat
  21. loop = delta (wrap _ delta)
  22. -- delta : _ -> _
  23. -- delta = \x -> app _ _ x x -- lam _ _ (\x -> app _ _ x x)
  24. --
  25. -- loop = app _ _ delta (wrap _ delta)