Mirror of https://github.com/leanprover/lean2 in case it ever disappears
872b698bc3
We may miss solutions, but the solutions found are much more readable. For example, without this option, for elaboration problem Theorem Example4 (a b c d e : N) (H: (a = b ∧ b = e ∧ b = c) ∨ (a = d ∧ d = c)) : (h a c) = (h c a) := DisjCases H (fun H1 : _, let AeqC := Trans (Conjunct1 H1) (Conjunct2 (Conjunct2 H1)) in CongrH AeqC (Symm AeqC)) (fun H1 : _, let AeqC := Trans (Conjunct1 H1) (Conjunct2 H1) in CongrH AeqC (Symm AeqC)) the elaborator generates Theorem Example4 (a b c d e : N) (H : a = b ∧ b = e ∧ b = c ∨ a = d ∧ d = c) : (h a c) = (h c a) := DisjCases H (λ H1 : if Bool (if Bool (a = b) (if Bool (if Bool (if Bool (b = e) (if Bool (b = c) ⊥ ⊤) ⊤) ⊥ ⊤) ⊥ ⊤) ⊤) ⊥ ⊤, let AeqC := Trans (Conjunct1 H1) (Conjunct2 (Conjunct2 H1)) in CongrH AeqC (Symm AeqC)) (λ H1 : if Bool (if Bool (a = d) (if Bool (d = c) ⊥ ⊤) ⊤) ⊥ ⊤, let AeqC := Trans (Conjunct1 H1) (Conjunct2 H1) in CongrH AeqC (Symm AeqC)) The solution is correct, but it is not very readable. The problem is that the elaborator expands the definitions of \/ and /\. Signed-off-by: Leonardo de Moura <leonardo@microsoft.com> |
||
---|---|---|
doc | ||
examples/lean | ||
script | ||
src | ||
tests/lean | ||
.gitignore | ||
.travis.osx.yml | ||
.travis.windows.yml | ||
.travis.yml | ||
LICENSE | ||
README.md |
Ubuntu 12.04 LTS 64bit, g++-4.8 | clang++-3.3
Windows, x86_64-w64-mingw32-g++-4.8.1
[Result of Build/UnitTest/Coverage/Dynamic Analysis]
About
Requirements
- C++11 compatible compiler: g++ (version >= 4.8.1), or clang++ (version >= 3.3)
- CMake
- GMP (GNU multiprecision library)
- MPFR (GNU MPFR Library)
- (optional) gperftools
Installing required packages at
Build Instructions
Miscellaneous
- Testing and Code Coverage
- Building Doxygen Documentation:
doxygen src/Doxyfile
- Coding style
- Git Commit Convention
- Automatic builds