LYaPAS
Logical Language for the Representation of Synthesis Algorithms, or LYaPAS (ЛЯПАС), is a programming language that sprung out of 1964 Soviet Union. It is based on set-theoretical considerations oriented toward the programming of synthesis algorithms for finite-state and discrete devices. The language is self-extending and self-compiling with only a minimal translator written for the native machine environment.
Speciality keyboard mappings are highly recommended for entering in the many non-typical keyboard symbols found in the language.
Its use of octal numbers within the language specification is considered one of its interesting qualities.
LYaPAS-M is a further refinement of LYaPAS.
Operators
l-operators
First-level operators in the language.
Basic Computational Operators
Symbol | Name | Example |
---|---|---|
∨ | Disjunction Operator | 01001101 ∨ 10011000 = 11011101 |
∧ | Conjunction Operator | 01001101 ∧ 10011000 = 00001000 |
⊕ | Exclusive Disjunction Operator | 01000110 ⊕ 10001100 = 11001010 |
+ | Addition Operator—Modulo 2p | 01000110 + 10001100 = 11010010 |
- | Subtraction Operator—Modulo 2p | 01000110 - 10001100 = 1011101 |
× | Multiplication Operator—Modulo 2p | 01000110 × 10001100 = 01001000 |
×̅ | Multiplication Operator with Round-Off | 01000110 ×̄ 10001100 = 00100110 |
: | Division Operator | 00001101:00000101 = 00000011 (remainder), я = 00000010 (integer part of quotient) |
┐ | Component-wise Inversion Operator | 01001101 ┐ = 10110010 |
ɪ | Order Inversion Operator | 01001101 ɪ = 10110010 |
⊢ | Leftmost 1 Position-Locating Operator | 00010110 ⊢ = 00000011 By convention, 00000000 ⊢ = 10000000 ⊢ = 00000000 |
⇤ | Normalization Operator | 00010110 ⇤ = 10110000, 00000000 ⇤ 00000000 |
< | Left-Shift Operator | 01101010 < 00000100 = 10100000 |
> | Right-Shift Operator | 01101010 > 00000101 = 00000011 |
← | Cyclic-Shift Operator | 01101010 ← 00100100 = 10100110 |
▽ | Weighting Operator | 01101010 ▽ = 00000100 (number of ones) |
⊻ | Reflection Operator | (Requires a more in-depth explanation.) |
Assignment Operators
Symbol | Name |
---|---|
⇒ | Assignment Operator |
⇔ | Interchange Operator |
⇐ | Natural Assignment Operator |
▵ | Positive Element-Incrementation Operator |
▵̅ | Negative Element-Incrementation Operator |
○ | Null-Value-Assignment Operator |
○̅ | Maximum-Value-Assignment Operator |
Implicit Variable τ
Implicit variable τ is a symbol that never appears in the program. The current value of τ is the result of the the realization of the current operator.
Control-Transfer Operators
Symbol | Name |
---|---|
→ | Unconditional Transfer Operator |
○→ | Conditional Transfer-on-Zero Operator |
↦ | Conditional Transfer-on-One Operator |
⇻ | Exit Operator |
! | Return Operator |
↓ | Transfer-to-Machine-Language Operator |
Ẋ | Enumeration-of-Ones Operator |
Ẍ | Random-Enumeration-of-Ones Operator |
Exchanging Information with External Medium Operators
Symbol | Name |
---|---|
* | Print-One-Element Operator |
⁑ | Punch-One-Element Operator |
↑ | Input Operator |
↗ | Data-Transfer-to-External-Complex Operator |
↙ | Data-Transfer-from-External-Complex Operator |
Other Operators
Symbol | Name |
---|---|
. | End-of-Algorithm Operator |
⇇ | Unlimited-Shift Operator |
L-operators
Second-level operators in the language.
Example
genadj. Perform generalized adjunction (joining) of intervals of a set.
genadj ακ?, ßκ? /b, d/ (αß)
170 233 4 (αab)
○ a ⇒ bbα ⇒ dc0 ┐⇒ b
Test for generalized adjunction of intervals Ia and Ib, formation of the interval Id—the result of the generalized adjunction—and setting of tags:
§1 △ a ⊕ d ○ → 4αa ⊕ αb∧ b ⇒ aßa
⊕ ßb ∧ a ⇒ a ⇤ ⊕ c0 ↦ 1αa
∨ αb ⊕ a ⇒ αd?ßα ∧ ßb ∨ a
∨ c0 ⇒ ßd?c0 ∨ αa ⇒ αac0 ∨ αb
⇒ αb ○ c ○ a
Test for presence of interval Id in Int:
§2 αc ⊕ αd ⊕ b |→ 3ßc ⊕ ßd ∧ b
↦ 3c0 ∨ ßc ⇒ ßc ○̄ a
§3 △ c ⊕ d ↦ 2a ↦ 1 △ d → 1
§4 ○̄ a △ b ⊕ d ↦ 1d ⇒ bα ⇒ bß