mix metastatic.validate_equivalence
(Metastatic v0.10.4)
View Source
Validate that two source files have semantically equivalent MetaAST representations.
This demonstrates cross-language semantic equivalence - showing that code in different languages can represent the same abstract computation at the M2 level.
Usage
mix metastatic.validate-equivalence FILE1 FILE2 [OPTIONS]Arguments
FILE1- First source fileFILE2- Second source file
Options
--lang1 LANG- Language of first file (optional, auto-detected)--lang2 LANG- Language of second file (optional, auto-detected)--verbose- Show detailed comparison
Examples
Compare Python and Elixir implementations:
mix metastatic.validate-equivalence hello.py hello.exCompare with explicit language specification:
mix metastatic.validate-equivalence file1.txt file2.txt --lang1 python --lang2 elixirShow detailed differences:
mix metastatic.validate-equivalence hello.py hello.ex --verboseEquivalence Checking
Two files are considered semantically equivalent if their MetaAST representations are identical. This means:
- Same structure and operations
- Same variable names
- Same literal values
- Same control flow
Differences allowed:
- Comments and documentation
- Whitespace and formatting
- Language-specific syntax sugar
- Type annotations (when not semantically meaningful)
Exit Codes
- 0 - Files are semantically equivalent
- 1 - Files are not equivalent or error occurred