Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A 'textbook' unification algorithm #11

Merged
merged 47 commits into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
56a1f49
coq color for symex
h0nzZik Apr 28, 2024
76d776a
fedora 39 + nix
h0nzZik Apr 28, 2024
27a2061
WIP symex
h0nzZik Apr 28, 2024
be87ed5
term_to_color
h0nzZik Apr 29, 2024
de65c99
this was ugly
h0nzZik Apr 29, 2024
897828f
update flake; vscoq-language-server
h0nzZik Apr 30, 2024
5d84a61
WIP
h0nzZik May 1, 2024
eafcc6f
WIP term_from_color
h0nzZik May 1, 2024
d908629
term_from_color
h0nzZik May 1, 2024
62458e7
better 'term_to_color'
h0nzZik May 1, 2024
27ccdc9
TODO well-founded
h0nzZik May 1, 2024
530bee2
WIP
h0nzZik May 1, 2024
015c231
subst_notin2
h0nzZik May 2, 2024
234fd29
wf_concat
h0nzZik May 3, 2024
a7c74b6
occurs_dec
h0nzZik May 3, 2024
ddd1f38
wft_minus
h0nzZik May 3, 2024
a2d5958
deg_cons_lt
h0nzZik May 3, 2024
e9bf2f5
WIP
h0nzZik May 3, 2024
2017ac3
vars_of_TermOverBoV_subst
h0nzZik May 3, 2024
d4dd047
sub_notin
h0nzZik May 4, 2024
42f6b1c
eqns_vars_sub
h0nzZik May 4, 2024
c2bfc5c
sub_decreases_degree
h0nzZik May 4, 2024
95e810f
simplify the previous lemma
h0nzZik May 4, 2024
64df546
fewer_arrows_lower_degree
h0nzZik May 4, 2024
ea5f437
Equations? unify
h0nzZik May 4, 2024
c8d82e7
cleanup
h0nzZik May 4, 2024
e00c3c3
something is weird at Qed time
h0nzZik May 4, 2024
389491f
does not work :-(
h0nzZik May 4, 2024
262dd0a
finish helper lemma 1
h0nzZik May 5, 2024
d66525e
helper_lemma_2
h0nzZik May 5, 2024
80f002d
WIP
h0nzZik May 5, 2024
3e664ee
sub_ext_cons
h0nzZik May 5, 2024
35a6e01
WIP
h0nzZik May 5, 2024
e25a028
14 goals remain
h0nzZik May 5, 2024
e784a4b
WIP another case
h0nzZik May 8, 2024
0a68af0
my implementation of unification is wrong`
h0nzZik May 8, 2024
5881257
helper_lemma_3
h0nzZik Jun 11, 2024
2966506
WIP
h0nzZik Jun 14, 2024
ae0d586
unify_no_variable_out_of_thin_air
h0nzZik Jun 16, 2024
60022b4
sub_app_unbound_var_2
h0nzZik Jun 16, 2024
090569a
generalize unify_no_variable_out_of_thin_air
h0nzZik Jun 16, 2024
fe69540
this was an ugly case
h0nzZik Jun 16, 2024
4f1bd99
unify_sound
h0nzZik Jun 16, 2024
1191cf6
subst_preserves_subterm
h0nzZik Jun 16, 2024
59f4824
WIP
h0nzZik Jun 17, 2024
473ed12
ALMOST there
h0nzZik Jun 17, 2024
27b99b4
unify_failure_is_severe
h0nzZik Jun 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ nia.cache
nlia.cache
nra.cache
native_compute_profile_*.data

.vagrant
# generated timing files
*.timing.diff
*.v.after-timing
Expand Down
95 changes: 95 additions & 0 deletions dist/vagrant/fedora39-nix/Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "generic/fedora39"


config.vm.provider :libvirt do |libvirt|
libvirt.cpus = 1
libvirt.memory = 12288
end
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
config.vm.provision "file", source: "../../../minuska", destination: "$HOME/minuska-src"

# Disable the default share of the current code directory. Doing this
# provides improved isolation between the vagrant box and your host
# by making sure your Vagrantfile isn't accessible to the vagrant box.
# If you use this you may want to enable additional shared subfolders as
# shown above.
# config.vm.synced_folder ".", "/vagrant", disabled: true

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.

# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
setenforce 0
sh <(curl -L https://nixos.org/nix/install) --daemon
echo 'experimental-features = nix-command flakes' >> /etc/nix/nix.conf
#dnf update
#dnf install -y opam ocaml-dune
SHELL

config.vm.provision "shell", privileged: false, inline: <<-SHELL
#opam init --auto-setup
#eval $(opam env)
#opam pin add coq 8.19.0
#opam repo add coq-released https://coq.inria.fr/opam/released
#opam install coq-equations coq-stdpp core core_unix menhir
SHELL

end
120 changes: 116 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 11 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
inputs = {
nixpkgs.url = "github:NixOs/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
vscoq.url = "github:coq-community/vscoq";
vscoq.inputs.nixpkgs.follows = "nixpkgs";
};

outputs = { self, nixpkgs, flake-utils }: (
outputs = { self, nixpkgs, flake-utils, vscoq }: (
flake-utils.lib.eachDefaultSystem (system:
let

Expand All @@ -17,6 +19,9 @@
let stdpp = coqPackages.stdpp; in
let coqLibraries = [
coqPackages.equations
coqPackages.QuickChick
# TODO remove, we will not use this
#coqPackages.CoLoR
stdpp
]; in
let bothNativeAndOtherInputs = [
Expand Down Expand Up @@ -169,7 +174,11 @@
in
pkgs.mkShell {
inputsFrom = [minuska];
packages = [minuska.coqPackages.coq-lsp minuska.coqPackages.coqide];
packages = [
minuska.coqPackages.coq-lsp
minuska.coqPackages.coqide
vscoq.packages.${system}.vscoq-language-server-coq-8-19
];
};

# For using Minuska
Expand Down
1 change: 1 addition & 0 deletions minuska/_CoqProject
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ theories/dt.v
theories/interp_loop.v
theories/example.v
theories/default_everything.v
theories/symex.v
1 change: 0 additions & 1 deletion minuska/theories/dt.v
Original file line number Diff line number Diff line change
Expand Up @@ -1401,7 +1401,6 @@ Proof.
{
unfold cmmatch in H.
destruct H as [j [pv [H1 H2]]].
Search lookup nil.
inversion H1.
}
{
Expand Down
Loading
Loading