# Slipnet Edge Types

This document describes all relationship types between nodes in the Copycat slipnet.

## Overview

The slipnet contains **202 links** connecting **59 nodes**. Links are categorized by:
1. **Link Type** - The structural role of the link
2. **Label** - An optional semantic annotation (itself a slipnode)

---

## Link Types (5 types)

### 1. `nonSlip` (83 links)
Lateral connections that do NOT allow conceptual slippage during analogy-making.

**Purpose**: Connect related concepts that should remain distinct during mapping.

**Examples**:
- `a` → `b` (labeled `successor`) - sequential letter relationship
- `b` → `a` (labeled `predecessor`) - reverse sequential relationship
- `left` → `leftmost` - direction to position association
- `sameness` → `samenessGroup` (labeled `groupCategory`) - bond type to group type
- `predecessorGroup` → `length` - groups have length property

### 2. `instance` (50 links)
Connect a category to its instances (downward in the hierarchy).

**Purpose**: Define membership relationships.

**Examples**:
- `letterCategory` → `a` (and all letters a-z)
- `length` → `1`, `2`, `3`, `4`, `5`
- `stringPositionCategory` → `leftmost`, `rightmost`, `middle`, `single`, `whole`
- `directionCategory` → `left`, `right`
- `bondCategory` → `predecessor`, `successor`, `sameness`
- `objectCategory` → `letter`, `group`

### 3. `category` (51 links)
Connect an instance back to its category (upward in the hierarchy).

**Purpose**: Allow instances to reference their parent category.

**Examples**:
- `a` → `letterCategory` (and all letters)
- `1` → `length` (and all numbers)
- `leftmost` → `stringPositionCategory`
- `predecessor` → `bondCategory`
- `samenessGroup` → `letterCategory`

### 4. `slip` (16 links)
Lateral connections that ALLOW conceptual slippage during analogy-making.

**Purpose**: Enable flexible mappings between related but distinct concepts.

**Examples**:
- `first` ↔ `last` (labeled `opposite`) - opposites can slip to each other
- `left` ↔ `right` (labeled `opposite`)
- `successor` ↔ `predecessor` (labeled `opposite`)
- `letterCategory` ↔ `length` - facets can slip
- `letter` ↔ `group` - object types can slip
- `single` ↔ `whole` - string positions can slip

### 5. `property` (2 links)
Connect objects to their intrinsic properties.

**Purpose**: Define inherent attributes of specific nodes.

**Examples**:
- `a` → `first` (letter 'a' has property of being first)
- `z` → `last` (letter 'z' has property of being last)

---

## Link Labels (5 labels)

Labels are themselves slipnodes that annotate links with semantic meaning.

### 1. `successor` (29 links)
Marks sequential forward relationships.

**Used on**: nonSlip links between consecutive letters (a→b, b→c, ..., y→z) and numbers (1→2, ..., 4→5)

### 2. `predecessor` (29 links)
Marks sequential backward relationships.

**Used on**: nonSlip links in reverse direction (b→a, c→b, ..., z→y) and numbers (2→1, ..., 5→4)

### 3. `opposite` (10 links)
Marks oppositional relationships.

**Used on**: slip links between conceptual opposites:
- `first` ↔ `last`
- `leftmost` ↔ `rightmost`
- `left` ↔ `right`
- `successor` ↔ `predecessor`
- `successorGroup` ↔ `predecessorGroup`

### 4. `groupCategory` (3 links)
Links bond types to their corresponding group types.

**Used on**: nonSlip links:
- `sameness` → `samenessGroup`
- `successor` → `successorGroup`
- `predecessor` → `predecessorGroup`

### 5. `bondCategory` (3 links)
Links group types back to their corresponding bond types.

**Used on**: nonSlip links:
- `samenessGroup` → `sameness`
- `successorGroup` → `successor`
- `predecessorGroup` → `predecessor`

---

## Special Cases: Label-Only Nodes

Two nodes exist in the slipnet but have **no edges as endpoints**:

### `opposite`
- Has 0 incoming and 0 outgoing edges as a graph node
- Used only as a label on 10 slip links
- Exists as a node so its activation can be tracked during reasoning

### `identity`
- Has 0 incoming and 0 outgoing edges as a graph node
- Not used as a label on any links in the current implementation
- Reserved for potential identity mappings in analogies

---

## Disconnected Cluster

Three nodes form a separate cluster disconnected from the letter nodes:

- `objectCategory` → `letter` (instance link)
- `objectCategory` → `group` (instance link)
- `letter` ↔ `group` (slip links)

These nodes are reachable from each other but not from any letter (a-z).

---

## Summary Table

| Type       | Count | Direction    | Allows Slippage | Purpose                          |
|------------|-------|--------------|-----------------|----------------------------------|
| nonSlip    | 83    | Directional  | No              | Lateral associations             |
| instance   | 50    | Category→Instance | N/A         | Membership (downward)            |
| category   | 51    | Instance→Category | N/A         | Classification (upward)          |
| slip       | 16    | Directional  | Yes             | Flexible analogy mappings        |
| property   | 2     | Object→Property | N/A           | Intrinsic attributes             |

| Label        | Count | Semantic Meaning                    |
|--------------|-------|-------------------------------------|
| successor    | 29    | Forward sequential relationship     |
| predecessor  | 29    | Backward sequential relationship    |
| opposite     | 10    | Oppositional relationship           |
| groupCategory| 3     | Bond-to-group association           |
| bondCategory | 3     | Group-to-bond association           |
