Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
Find a file
Leonardo de Moura 9399ce8346 feat(library/vm/vm_string): provide native implementation of type string in the VM
closes #1175

The types `string_imp` and `string.iterator_imp` were supposed to be
marked private, but we cannot do it because we need to provide
`string_imp.mk`, `string_imp.cases_on`, `string.iterator_imp.mk` and
`string.iterator_imp.cases_on` in the VM since we use a different
internal representation. Note that marking them as private does not
work since users can still access `string_imp.cases_on` using
meta-programming.
So, we need better support for private declarations.

Missing feature, char literals do not support non ASCII values.
That is, in the current implementation, we cannot write 'α'.
This will be implemented in the future.

The VM native implementation does not behave correctly for huge
strings (i.e., strings with more than 4G characters).
The problem is that the current implementation relies on
```
size_t force_to_size_t(vm_obj const & o, size_t def)
```
We may also have overflow problems in the string.iterator implementation
code. This is not a big deal right now, since I doubt we will try
to process string with more than 2^32 characters.

@Kha the `core_lib` and tests seem to be working correctly, but
we need more tests.
2017-10-23 10:55:26 -07:00
.github chore(.github/CONTRIBUTING.md): update PR submission guidelines. 2017-08-16 14:22:32 -07:00
bin chore(src/emacs): move lean-mode to https://github.com/leanprover/lean-mode 2017-10-06 10:46:43 -07:00
doc feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
extras/latex chore(extras/depgraph): remove leandeps 2017-07-15 02:27:17 -07:00
images chore(CMakeLists.txt): move Lean logo to make sure we can test leanemacs without installing Lean 2015-01-31 17:38:49 -08:00
leanpkg fix(leanpkg): fix error message 2017-09-14 18:48:18 +02:00
library feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
script chore(script/package_registry): remove library_dev from test suite 2017-08-17 07:41:35 -07:00
src feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
tests feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
tmp feat(frontends/lean,library/equations_compiler): store tactics for generating well founded relation and decreasing proofs 2017-05-23 15:00:29 -07:00
.appveyor.yml chore(.appveyor.yml,.travis.yml): simplify using glob patterns 2017-07-26 17:13:34 +02:00
.clang-format feat(library/vm/process): add basic process support 2017-03-28 18:08:06 -07:00
.codecov.yml fix(.codecov.yml): do not fail github ci if coverage drops by 0.01% 2017-06-25 10:35:02 +02:00
.gitignore chore(gitignore): ignore nix files 2017-06-19 13:16:04 +02:00
.travis.yml chore(.travis.yml): undo Travis update 2017-09-15 12:33:46 -07:00
LICENSE
README.md chore(src/emacs): move lean-mode to https://github.com/leanprover/lean-mode 2017-10-06 10:46:43 -07:00